﻿using System;
using System.Windows.Forms;
using MultiLang;
using Rsdn.Janus.Framework;
using Rsdn.Janus.Framework.Ipc;

namespace GoJanusCmd
{
    internal static class Program
    {
        private const string cCommandDownload = "download"; // MLHIDE
        private const string cCommandGo = "go"; // MLHIDE
        private const string cCommandGoUrl = "url"; // MLHIDE
        private const string cCommandDownloadodUrl = "dlurl"; // MLHIDE
        private const string cCommandHint = "hint"; // MLHIDE

        private static int Main(string[] args)
        {
            string hint = "";
            try
            {
                if (args.Length == 0)
                {
                    ShowHelp();
                    return 1;
                }
                SharedFunctions.StartJanus();
                foreach (string arg in args)
                {
                    if (arg.StartsWith(cCommandGo))
                    {
                        int topicId = int.Parse(arg.Substring(cCommandGo.Length));
                        new SendCommand().Go(topicId);
                    }
                    else if (arg.StartsWith(cCommandDownload))
                    {
                        int topicId = int.Parse(arg.Substring(cCommandDownload.Length));
                        new SendCommand().Download(topicId);
                    }
                    else if (arg.StartsWith(cCommandDownloadodUrl))
                    {
                        string link = arg.Substring(cCommandDownloadodUrl.Length);
                        string linkText = "External link";
                        if (!string.IsNullOrEmpty(hint))
                        {
                            linkText = hint;
                        }
                        new SendCommand().DownloadUrl(link,linkText);
                    }
                    else if (arg.StartsWith(cCommandHint))
                    {
                        hint = arg.Substring(cCommandHint.Length);
                    }
                    else if (arg.StartsWith(cCommandGoUrl))
                    {
                        string link = arg.Substring(cCommandGoUrl.Length);
                        new SendCommand().GoURL(link);
                    }
                    else
                    {
                        return 1;
                    }
                }
            }
            catch (NamedPipeIOException)
            {
                return 2;
            }
            catch (Exception)
            {
                return 3;
            }

            return 0;
        }

        private static void ShowHelp()
        {
            string help =
                    ml.ml_string(4, "Консольная программа для отправки команд Янусу.") +
                    "\n" +                                             //MLHIDE
ml.ml_string(5, "Формат вызова:") +
    "\n" +                                                              //MLHIDE
ml.ml_string(6, "DoJanusCmd.exe <cmd><URL | topicID> [ <cmd><URL | topicID> ...]") +
    "\n" +                                                              //MLHIDE
ml.ml_string(7, ", где CMD:") +
    "\n" +                                                              //MLHIDE
ml.ml_string(8, "go - открытие <topicID> в Янусе") +
    "\n" +                                                              //MLHIDE
ml.ml_string(9, "url - открыть ссылку <URL> с  topicID в Янусе") +
    "\n" +                                                              //MLHIDE
ml.ml_string(10, "durl - скачать topicID взятый из ссылки <URL> при следующей синхронизации в Янусе") +
    "\n" +                                                              //MLHIDE
ml.ml_string(11, "download - скачать <topicID> при следующей синхронизации") +
    "\n" +                                                              //MLHIDE
"\n" +                                                                  //MLHIDE
ml.ml_string(12, "Коды возврата:") +
    "\n" +                                                              //MLHIDE
ml.ml_string(13, "0 - успешное") +
    "\n" +                                                             //MLHIDE
ml.ml_string(14, "1 - неверная команда") +
    "\n" +                                                              //MLHIDE
ml.ml_string(15, "2 - Янус не запущен") +
    "\n" +                                                              //MLHIDE
ml.ml_string(16, "3 - другая ошибка") +
    "\n" +                                                              //MLHIDE
    "\n" +                                                              //MLHIDE
ml.ml_string(17, "Пример:") +
    "\n" +                                                              //MLHIDE
"DoJanusCmd.exe download12585 go556565" +                              //MLHIDE
    "\n"                                                              //MLHIDE
;
            MessageBox.Show(help, "DoJanusCmd"); // MLHIDE
        }
    }
}